<script lang="ts" setup>
import { onLoad, onShow, storeCommit, storeState } from '@U/common'
import { hasRedirect } from '@U/Auth'
import { onLaunch } from '@dcloudio/uni-app'
import type { IObj } from '@/interface'

onLaunch(() => {
  // 解决播放音频时没有声音的bug
  // obeyMuteSwitch 设置为 false，即使是在静音模式下，也能播放声音
  wx.setInnerAudioOption({
    obeyMuteSwitch: false,
    success() {
      console.log('开启静音模式下播放音乐的功能')
    },
    fail() {
      console.log('静音设置失败')
    },
  })
})
onLoad(() => {
  uni.getSystemInfo({
    success(res: IObj) {
      storeCommit('system', res)
      // ios、android底部安全距离
      if (storeState.system?.osName === 'ios' || storeState.system?.osName === 'android') {
        storeCommit('bottomSafeDis', storeState.system?.safeAreaInsets?.bottom || 24)
      }
    },
  })
})
onShow((e: any) => {
  uni.getSystemInfo({
    success(res: IObj) {
      storeCommit('system', res)
      // ios、android底部安全距离
      if (storeState.system?.osName === 'ios' || storeState.system?.osName === 'android') {
        storeCommit('bottomSafeDis', storeState.system?.safeAreaInsets?.bottom || 24)
      }
    },
  })
  if (e.query?.redirect) {
    hasRedirect(e.query)
  }

  // getUpdateManager 是 1.9.90 开始支持，低版本需做兼容处理 低版本提示用户手动更新
  if (uni.canIUse('getUpdateManager')) {
    // 强制更新
    const updateManager = uni.getUpdateManager()

    updateManager.onCheckForUpdate((res) => {
      // 请求完新版本信息的回调
      if (res.hasUpdate) {
        updateManager.onUpdateReady(() => {
          uni.showModal({
            title: '更新提示',
            content: '检测到新版本，是否下载新版本并重启小程序？',
            success(res) {
              if (res.confirm) {
                // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                updateManager.applyUpdate()
              } else if (res.cancel) {
                uni.showModal({
                  title: '温馨提示',
                  content: '本次版本更新涉及到新的功能添加，旧版本无法正常访问的哦~',
                  showCancel: false,
                  confirmText: '确定更新',
                  success(res) {
                    if (res.confirm) {
                      // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                      updateManager.applyUpdate()
                    }
                  },
                })
              }
            },
          })
        })
        updateManager.onUpdateFailed(() => {
          // 新的版本下载失败
          uni.showModal({
            title: '温馨提示',
            content: '当前版本为最新版本，请您删除当前小程序，重新搜索打开',
          })
        })
      }
    })
  } else {
    uni.showModal({
      title: '提示',
      content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。',
    })
  }
})
</script>
<style lang="scss">
/* 注意要写在第一行，同时给style标签加入lang="scss"属性 */
@import "uview-plus/index.scss";
</style>
<style lang="less">
@import "static/iconfont.css";
@import "style/vivify.min.css";
@import "style/common";
@import "style/base";
@import "style/pitaya";
@import "wxcomponents/vant/common/index.wxss";
</style>
